home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA. */
-
- /*
- * ISO C99 7.6: Floating-point environment <fenv.h>
- */
-
- #ifndef _FENV_H
- #define _FENV_H 1
-
- #include <features.h>
-
- /* Get the architecture dependend definitions. The following definitions
- are expected to be done:
-
- fenv_t type for object representing an entire floating-point
- environment
-
- FE_DFL_ENV macro of type pointer to fenv_t to be used as the argument
- to functions taking an argument of type fenv_t; in this
- case the default environment will be used
-
- fexcept_t type for object representing the floating-point exception
- flags including status associated with the flags
-
- The following macros are defined iff the implementation supports this
- kind of exception.
- FE_INEXACT inexact result
- FE_DIVBYZERO division by zero
- FE_UNDERFLOW result not representable due to underflow
- FE_OVERFLOW result not representable due to overflow
- FE_INVALID invalid operation
-
- FE_ALL_EXCEPT bitwise OR of all supported exceptions
-
- The next macros are defined iff the appropriate rounding mode is
- supported by the implementation.
- FE_TONEAREST round to nearest
- FE_UPWARD round toward +Inf
- FE_DOWNWARD round toward -Inf
- FE_TOWARDZERO round toward 0
- */
- #include <bits/fenv.h>
-
- __BEGIN_DECLS
-
- /* Floating-point exception handling. */
-
- /* Clear the supported exceptions represented by EXCEPTS. */
- extern int feclearexcept (int __excepts) __THROW;
-
- /* Store implementation-defined representation of the exception flags
- indicated by EXCEPTS in the object pointed to by FLAGP. */
- extern int fegetexceptflag (fexcept_t *__flagp, int __excepts) __THROW;
-
- /* Raise the supported exceptions represented by EXCEPTS. */
- extern int feraiseexcept (int __excepts) __THROW;
-
- /* Set complete status for exceptions indicated by EXCEPTS according to
- the representation in the object pointed to by FLAGP. */
- extern int fesetexceptflag (__const fexcept_t *__flagp, int __excepts) __THROW;
-
- /* Determine which of subset of the exceptions specified by EXCEPTS are
- currently set. */
- extern int fetestexcept (int __excepts) __THROW;
-
-
- /* Rounding control. */
-
- /* Get current rounding direction. */
- extern int fegetround (void) __THROW;
-
- /* Establish the rounding direction represented by ROUND. */
- extern int fesetround (int __rounding_direction) __THROW;
-
-
- /* Floating-point environment. */
-
- /* Store the current floating-point environment in the object pointed
- to by ENVP. */
- extern int fegetenv (fenv_t *__envp) __THROW;
-
- /* Save the current environment in the object pointed to by ENVP, clear
- exception flags and install a non-stop mode (if available) for all
- exceptions. */
- extern int feholdexcept (fenv_t *__envp) __THROW;
-
- /* Establish the floating-point environment represented by the object
- pointed to by ENVP. */
- extern int fesetenv (__const fenv_t *__envp) __THROW;
-
- /* Save current exceptions in temporary storage, install environment
- represented by object pointed to by ENVP and raise exceptions
- according to saved exceptions. */
- extern int feupdateenv (__const fenv_t *__envp) __THROW;
-
-
- /* Include optimization. */
- #ifdef __OPTIMIZE__
- # include <bits/fenvinline.h>
- #endif
-
- #ifdef __USE_GNU
-
- /* Enable individual exceptions. Will not enable more exceptions than
- EXCEPTS specifies. Returns the previous enabled exceptions if all
- exceptions are successfully set, otherwise returns -1. */
- extern int feenableexcept (int __excepts) __THROW;
-
- /* Disable individual exceptions. Will not disable more exceptions than
- EXCEPTS specifies. Returns the previous enabled exceptions if all
- exceptions are successfully disabled, otherwise returns -1. */
- extern int fedisableexcept (int __excepts) __THROW;
-
- /* Return enabled exceptions. */
- extern int fegetexcept (void) __THROW;
- #endif
-
- __END_DECLS
-
- #endif /* fenv.h */
-